package com.jt.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import com.jt.util.MyUtil;
import com.jt.vo.PageResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.UUID;

/**
 * @author 金帮嘉诚 @date 2021-08-14 星期六 17:18
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    /**
     * 业务 用户登录
     * 需要将输入的密码转换为MD5格式
     * 参数 user
     * 返回值 token
     *
     * @param user 传入的username和password
     * @return token 生成的uuid截取不含-的部分
     */
    @Override
    public String login(User user) {
        MyUtil.mySetM5Password(user);
        System.out.println(user.getPassword());
        QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);

        User userDB = userMapper.selectOne(queryWrapper);
        System.out.println("userDB = " + userDB);
        if (userDB == null) {
            return null;
        }
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * 业务 分页查询user表
     * 参数 pageResult对象
     * 包含 query pageNum pageSize
     *
     * @param pageResult 包含 query pageNum pageSize
     * @return pageResult 还包含了分页后的user信息存在row对象中 总数据量total
     */
    @Override
    public PageResult getUserList(PageResult pageResult) {
        int pageNum = pageResult.getPageNum();
        int pageSize = pageResult.getPageSize();
        //获取page对象
        Page<User> page = new Page<>(pageNum, pageSize);
        //添加query 查询信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();

        //判断是否需要查询 此处用到了工具API 判断是否为null或为空串
        boolean queryFlag = StringUtils.hasLength(pageResult.getQuery());
        queryWrapper.like(queryFlag, "username", pageResult.getQuery());
        //获取分页对象 放入page
        page = userMapper.selectPage(page, queryWrapper);
        //将获得的page对象的成员变量值放入pageResult对象对应的成员变量
        pageResult.setTotal(page.getTotal());
        pageResult.setRows(page.getRecords());
        return pageResult;
    }
}

